package org.wang.generalcode.modules.sys.pojo.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.wang.generalcode.modules.sys.handler.MenuTypeEnumHandler;
import org.wang.generalcode.modules.sys.pojo.enums.MenuTypeEnum;

import java.time.LocalDateTime;

/**
 * 菜单管理实体类
 *
 * @author wz
 * @since 2024-08-08
 */
@Data
@Schema(description = "菜单管理")
@TableName("sys_menu")
public class Menu  {
	/**
	* ID
	*/
	@Schema(description = "ID")
	@TableId(value = "id", type = IdType.AUTO)
	private Long id;
	/**
	* 父菜单ID
	*/
	@Schema(description = "父菜单ID")
	private Long parentId;
	/**
	* 父节点ID路径
	*/
	@Schema(description = "父节点ID路径")
	private String treePath;
	/**
	* 菜单名称
	*/
	@Schema(description = "菜单名称")
	private String name;
	/**
	* 菜单类型（1-菜单 2-目录 3-外链 4-按钮）
	*/
	@Schema(description = "菜单类型（1-菜单 2-目录 3-外链 4-按钮）")
	@TableField(value = "type", typeHandler = MenuTypeEnumHandler.class)
	private MenuTypeEnum type;
	/**
	* 路由名称（Vue Router 中用于命名路由）
	*/
	@Schema(description = "路由名称（Vue Router 中用于命名路由）")
	private String routeName;
	/**
	* 路由路径（Vue Router 中定义的 URL 路径）
	*/
	@Schema(description = "路由路径（Vue Router 中定义的 URL 路径）")
	private String routePath;
	/**
	* 组件路径（组件页面完整路径，相对于 src/views/，缺省后缀 .vue）
	*/
	@Schema(description = "组件路径（组件页面完整路径，相对于 src/views/，缺省后缀 .vue）")
	private String component;
	/**
	* 【按钮】权限标识
	*/
	@Schema(description = "【按钮】权限标识")
	private String perm;
	/**
	* 【目录】只有一个子路由是否始终显示（1-是 0-否）
	*/
	@Schema(description = "【目录】只有一个子路由是否始终显示（1-是 0-否）")
	private Integer alwaysShow;
	/**
	* 【菜单】是否开启页面缓存（1-是 0-否）
	*/
	@Schema(description = "【菜单】是否开启页面缓存（1-是 0-否）")
	private Integer keepAlive;
	/**
	* 显示状态（1-显示 0-隐藏）
	*/
	@Schema(description = "显示状态（1-显示 0-隐藏）")
	private Integer visible;
	/**
	* 排序
	*/
	@Schema(description = "排序")
	private Integer sort;
	/**
	* 菜单图标
	*/
	@Schema(description = "菜单图标")
	private String icon;
	/**
	* 跳转路径
	*/
	@Schema(description = "跳转路径")
	private String redirect;
	/**
	* 创建时间
	*/
	@Schema(description = "创建时间")
	private LocalDateTime createTime;
	/**
	* 更新时间
	*/
	@Schema(description = "更新时间")
	private LocalDateTime updateTime;
	/**
	* 路由参数
	*/
	@Schema(description = "路由参数")
	private String params;


}
